OSAI
WINPLUS
Versione
0.8
Sviluppato da: Ufficio Automazione
In
data:
:
05/05/2004
Aggiornato
: 24/08/2011
Versione di rif.: 2.15.2
Il presente manuale fornisce una serie di istruzioni
indispensabili per la corretta installazione ed utilizzo del software di
programmazione WinPLUS. Questo
software, operante in ambiente Windows, consente di progettare applicazioni PLC
per i controlli numerici OSAI.
Vengono inoltre indicati i criteri adottati da CMS
per la progettazione con WinPLUS delle applicazioni PLC.
Versione
0.8
Revisione generale del
documento
In particolare:
-
aggiunto descrizione file
messaggi in lingua multipli (ITA.ASC, ING.ASC, …) come alternativa al singolo
file WinPlus.asc. Inserito inoltre suggerimenti per gestione messaggi (variabili
indirizzate in chiaro, stringa messaggio come commento per agevolare operazioni
di diagnostica, azione messaggio slegata dalla relativa posizione nel
file)
-
aggiunto tabelle per
nomenclatura variabili , strutture dati e segnali I/O
-
aggiunto descrizione file
ausiliari presenti nella cartella WIN (INITVAR,…)
-
aggiunto esempi per
indirizzamento diretto variabili CN (in particolare messaggi e
I/O)
-
aggiornato Area di
Memoria OSAI WinPLUS
-
aggiunto esempi per
gestione timer e pulse senza parametri formali
Versione
0.7
Inserito capitolo “Backup
e Restore del PLC mediante PM Tool"
Versione
0.6
Inserito capitolo
“Metodologia di identificazione errore da interprete
WinPlus”
Versione
0.5
Modificato tabella area
di memorie winplus:
Modificato Modulo “PANPC”
per errore indirizzamento.
Inserito Modulo nuovo
“USUR”, file per gestire l’usura utensile.
Modificato Modulo
“PROTOC” per nuovi indirizzamenti.
Versione
0.4
Modificato tabella area
di memorie winplus. Inserito Modulo nuovo “PANPC”, file per gestire il Pannello
operativo su PC “OpPanel.exe”.
Modificato gestione
Softkey
Versione
0.3
Modificato tabella area
di memorie winplus. Inserito Modulo nuovo “VARI”, e modificato modulo
“LUBR”.
Versione
0.2
Aggiornato tabella area
di memorie winplus
Versione
0.1
Primo
documento
Installazione dell’ambiente
WinPLUS. 5
Struttura del progetto WinPLUS. 6
Criteri per la realizzazione del progetto
WinPLUS. 6
Gestione delle
COSTANTI e delle VARIABILI WinPLUS. 7
INDIRIZZAMENTO
SIMBOLICO (opzionale) 10
Tabella
Indirizzamento simbolici Area CN tramite puntatore.. 12
TABELLA DEI
SIMBOLI PER NOMENCLATURA SEGNALI I/O.. 15
TABELLA DEI
SIMBOLI PER NOMENCLATURA VARIABILI GLOBALI. 16
TABELLA DEI
SIMBOLI PER NOMENCLATURA VARIABILI LOCALI (Solo Volatili) 16
AREA DI MEMORIA
OSAI WINPLUS
23/08/2011. 17
Strutture di programmazione.. 18
FUNZIONI E
FUNCTION BLOCK.. 18
TABELLA DEI
SIMBOLI PER NOMENCLATURA ULTERIORI STRUTTURE DATI. 20
Tramite
FILE unico WINPLUS.ASC.. 21
Tabella
Messaggi WinPLUS.ASC.. 23
Tramite
FILE specifici per ciascuna lingua (ITA.ASC, ING.ASC, FRA.ASC, …) 26
Debugging del progetto WinPLUS. 27
Metodologia di
identificazione errore da interprete WinPlus. 27
Backup e restore del PLC mediante PM
Tool.. 29
L’applicazione PLC WinPLUS consiste in un insieme di
file che vanno caricati nel direttorio E:\LOG del CN.
Per lo sviluppo, la generazione finale ed il
trasferimento di questi file è necessario che sia presente l’ambiente di
sviluppo WinPLUS su un PC di utilità (può essere lo stesso PC a bordo della
macchina).
In funzione della versione dell’applicazione WinPLUS
può essere necessario per le operazioni di compilazione disporre della relativa
chiavetta USB OSAI, mentre le operazioni di download sono sempre
consentite.
Esistono dei file di configurazione, alcuni dei quali
generati con programmi dedicati,
che devono essere successivamente copiati (tramite normale comando
Windows) nella directory E:\LOG\WIN. Di seguito ne viene riportato
l’elenco:
- Configurazione INTERBUS
: WINPLUS.SVC
- Configurazione CANOPEN
: WINPLUS.BUS
- Configurazione CANOPEN Scheda Hilscher
: CANBUS0.DBM
- Rimappatura I/O CANOPEN Scheda Hilscher : CANBUS0.RMP
- Configurazione unica MESSAGGI DI LOGICA
: WINPLUS.ASC
- MESSAGGI DI LOGICA in Italiano
: ITA.ASC
- MESSAGGI DI LOGICA in Inglese
: ING.ASC
- MESSAGGI DI LOGICA in Francese
: FRA.ASC
- MESSAGGI DI LOGICA in …
: …
.ASC
Talvolta vengono inseriti in questa directory anche
file ausiliari specifici per l’applicazione, che consentono di definire un
numero notevole di parametri senza gravare sulle variabili @ e con un livello di
protezione maggiore, anche se di contro non consentono i vantaggi delle
variabili @ (aggiornamento immediato del valore della variabile, utilizzo della
variabile nei Part-Program, nessuna scrittura di codice PLC per la relativa
decodifica, …). Questi file vengono decodificati da PLC al verificarsi di
determinati eventi: accensione CN,
POWER ON macchina ...
Esempi di file parametri macchina che possono essere
presenti nella cartella WIN:
- Parametri macchina
: INIT_VAR
- Parametri Motori PHASE Cambio Utensile :
INITPHCU
…
Vedi paragrafo relativo
nella Procedura SQ09.P05/IO-22
“INSTALLAZIONE E
CONFIGURAZIONE SISTEMA OPERATIVO
WINDOWS E APPLICATIVI CN”
Il progetto WinPLUS è costituito da più file
organizzati in specifici direttori: Configurazione, Programmi, Variabili e
Costanti, Funzioni, Function Block, Data Types, Librerie.
I programmi vanno agganciati ai TASK di gestione (File
CicloPLC.res) in funzione delle
loro dimensioni e delle prestazioni richieste (frequenza di esecuzione, evento
di esecuzione, …).
Per la realizzazione di un progetto con WinPLUS è
necessario seguire in primo luogo i criteri adottati per la stesura del
programma PLC di tutti i progetti di automazione:
-
strutturazione
dell’applicazione PLC in sottoblocchi e relativa
nomenclatura.
-
nomenclatura variabili e simbolici come da standard
CMS (nelle tabelle indicate nelle pagine seguenti vengono riportati degli
esempi).
-
suddivisione aree di memoria
CN come indicato nella tabella “AREA DI MEMORIA OSAI WINPLUS” indicata nelle
pagine seguenti.
COSTANTI
E’ preferibile utilizzare dei valori simbolici nelle varie espressioni di calcolo,
ovvero delle COSTANTI, al posto di valori assoluti di cui non è sempre facile
intuire il significato.
Si decide di definire le costanti negli stessi
blocchi in cui vengono definite le variabili, inserendole nell’apposita sezione
CONST.
Con WinPLUS il nome di una costante deve essere lungo
al massimo 32 caratteri.
Per convenzione interna si decide di costruire il
nome di ciascuna costante partendo dal tipo seguito dal nome del blocco in cui
viene definita e da una descrizione generale, utilizzando il carattere “_” come
separatore e scrivendo in maiuscolo
ciascun carattere.
Nel caso di costanti definite nei moduli VarCom.gvl o VarMac.gvl si
omette il nome del blocco.
Formato Generale:
KTIPO_BLOCCO_DESCRIZIONE
: TIPO COSTANTE
:= VALORE ;
KTIPO_ TIPO COSTANTE VALORE
KM_
BOOL
1 bit
range:
0,1 (FALSE,TRUE)
KB_
BYTE
8 bit
range:
0…255
KW_
WORD
16 bit (+) range:
0...65535
KI_
INT
16 bit (+/-) range:
-32768…+32767
KDW_
DWORD 32
bit (+) range:
0…4294967295
KDI_
DINT
32 bit (+/-) range:
-2147483648…+2147483647
KLR_
LREAL
64 bit floating point
KSTRING_ STRING
cost. stringa (vedi manuale
“WinPLUS Programming Manual”)
KTIME_
TIME
cost. tempo (vedi manuale “WinPLUS Programming
Manual”)
Esempi:
Costanti generali definite nel modulo
VarCom.gvl:
KI_PROCESSO1
: INT:= 1 ;
KT_10MS
: TIME:= T#10ms ;
Costanti specifiche definite nel modulo VarAssi.gvl:
KI_ASSI_NUM_BIT_FEED_OVR : INT:= 5
;
KI_ASSI_NUM_BIT_SPEED_OVR
: INT:= 4
;
VARIABILI
Come per le costanti anche per le variabili si decide
di adottare una convenzione interna per la loro nomenclatura così da agevolare
la lettura del codice del programma
Con WinPLUS il nome di una variabile deve essere
lungo al massimo 32 caratteri.
Per convenzione interna si decide di costruire il
nome di ciascuna variabile partendo dal tipo seguito dal nome del blocco
separati dal carattere “_” e scritti interamente in maiuscolo) e seguiti da una
descrizione generale composta da una successione di parole di cui solo le
iniziali scritte in maiuscolo.
N.B.: Il significato dell’azione espressa dal nome
della variabile deve fare riferimento allo stato logico 1
(VERO).
Eccezioni:
a) nel caso di variabili
generali o di sistema definite nei moduli VarCom.gvl o VarMac.gvl si omette il
nome del blocco.
b) il nome del blocco non
va indicato anche nel caso di variabili LOCALI, segnali di I/O e può essere
omesso nel caso di variabili indicanti funzioni M/S/T.
c)
per le variabili
indicanti segnali di I/O si preferisce sostituire al tipo di variabile (in
generale BOOL) il tipo di segnale
relativo (come da tabella indicata nelle pagine seguenti)
d) per i messaggi si
prevede uno specifico file (VarMsg.gvl) dove vengono definiti tutti gli allarmi
della macchina specificando come blocco quello in cui verranno settati. Inoltre
viene sostituito il tipo di variabile (BOOL) dalla stringa
“MSG_”
e) ulteriori convenzioni
vengono utilizzate per alcuni tipi di variabili utilizzate ad esempio per la
decodifica di softkey, per i parametri formali delle funzioni o per variabili
rappresentanti maschere di bit. Gli esempi indicati nelle pagine successive
cercheranno di chiarire i vari casi.
In generale le variabili WinPLUS si dividono in
variabili GLOBALI ed in variabili LOCALI.
Le varabili GLOBALI possono essere anche dichiarate
ritentive (ovvero mantengono il relativo valore anche a macchina spenta).
Variabili GLOBALI: sono variabili che vengono definite tramite
l’istruzione VARGLOBAL in un’apposita sezione (VARGLOBAL RETAIN nel caso le si
desideri ritentive).
La sezione può essere decentrata in più file e le variabili sono visibili a tutti i
blocchi del programma che includano (istruzione “#IMPORT”) i file dove tali
sezioni sono state dichiarate.
Talvolta, per esigenze varie (gestione protocolli,
gestione maschere a bit, …), si deve associare a ciascuna variabile GLOBALE una
memoria CN che va scelta nel range relativo al blocco in cui viene impostata
(vedi tabelle successive).
In passato si era scelta questa tecnica anche per
semplificare le operazioni di debug presso il cliente, dato che in questo caso
era possibile sfruttare le operazioni di acquisizione valore variabili presenti
nell’ambiente OSAI “tradizionale”. La migliorata conoscenza dell’ambiente
WinPLUS, con la possibilità di disporre di strumenti di diagnostica migliore
hanno alla fine soppiantato questa tecnica, che nelle ultime applicazioni viene
utilizzata solo quando necessario.
Si decide di definire
tutte le variabili Globali comuni a tutte le applicazioni nel file VarCom.gvl,
le variabili generali di macchina nel file VarMac.gvl, le variabili associate a
segnali I/O nel file VarInOut.gvl, le variabili associate a messaggi nel file
VarMsg,gvl e di definire quelle specifiche ad ogni singolo modulo in appositi
file di nome VarModulo.gvl. Per differenziare le une dalle altre in quest’ultimo
caso s’inserisce nel nome della variabile il nome del blocco. In alcuni casi il nome non viene
indicato perché facilmente intuibile (ad esempio nel caso di funzioni M/S/T ,
ecc.).
Variabili LOCALI: sono variabili che vengono definite in una specifica
sezione all’interno di ciascun BLOCCO di programma così da renderle visibili
solo da questo blocco (variabili
LOCALI utilizzate in blocchi diversi con lo stesso nome devono essere
considerate variabili diverse a tutti gli effetti).
Per differenziarle dalle variabili GLOBALI per le
variabili LOCALI si è deciso di anteporre la stringa “LOC_” al tipo di variabile
senza indicare il nome del blocco essendo sempre quello in cui vengono definite
ed utilizzate.
Formato Generale:
NOME_VARIABILE
at INDIRIZZO (opzionale)
: TIPO VARIABILE ;
TIPO
VARIABILE
:
BOOL
1 bit
range:
0,1 (FALSE,TRUE)
BYTE
8 bit
range:
0…255
WORD
16 bit (+) range:
0...65535
INT
16 bit (+/-) range:
-32768…+32767
DWORD 32
bit (+) range:
0…4294967295
DINT
32 bit (+/-) range:
-2147483648…+2147483647
LREAL
64 bit floating point
STRING
variabili tipo stringa (vedi manuale “WinPLUS Programming
Manual”)
TIME
variabili tipo tempo (vedi manuale “WinPLUS Programming
Manual”)
Esempi NOME VARIABILE:
Nome
Variabile:
Tipo
Modulo
INP_OkModuloEmergenza
Segnale ingresso
VarInOut.gvl
SQ_PortaDxAperta
Sensore di posizione
VarInOut.gvl
YV_SoffiatoreUtensile
Elettrovalvola
VarInOut.gvl
MM_ASSI_AsseXInMovimento
Bit Globale
VarAssi.gvl
RI_CAMB_UtensileMandrino
INT Ritentivo memoria CN VarCamb.gvl
RLRretain_VARI_ContaMinuti
LREAL ritentiva mem. WinPLUS
VarVari.gvl
MW_ZERO_MskRichiestaZeroAssi
WORD Globale (maschera bit)
VarZero.gvl
SM_CN_ResetProcesso1
Bit di sistema
VarCom.gvl
MSG_CAMBIO_CambioUtInCorso
Messaggio
VarMsg.gvl
M21
Bit Funzione M
VarFunz.gvl
LOC_MI_Contatore
INT Locale
Modulo.st
LOC_MLR_ValoreSpeedOverride
LREAL Locale
Modulo.st
Nelle tabelle riportate nelle pagine seguenti sono
indicati tutti i tipi di variabili globali e locali e tutti i simboli da
utilizzare per i segnali di I/O.
Come si è detto in precedenza talvolta è preferibile
o necessario utilizzare le variabili tradizionali del CN associandovi un nome
simbolico.
Una volta stabilito il nome della variabile è
necessario definire l’indirizzo di memoria a cui è associata. Di seguito viene
indicato il metodo tradizionale tramite puntatore al BYTE specifico dove è
allocata la variabile CN relativa.
Nelle ultime release CN, OSAI consente di associare direttamente i simbolici
alle variabili CN in chiaro così da agevolare la definizione delle variabili
stesse e si consiglia quindi di utilizzare questa tecnica. In seguito ne
verranno indicati degli esempi.
Indirizzamento tramite puntatore: %NN. k*i + offset (.bit)
dove:
NN =
sigla abbinata al tipo di memoria WinPLUS
(MX=BOOL, MB=BYTE, MW=WORD/INT,
MD=DWORD/DINT,
ML=LREAL)
I0, IB0,
IW0, ID0
per gli input
In_m
Q1, QB0, QW1,
QD1
per gli output On_m
MX2, MB2, MW2,
MD2, ML2
per S, SW, G, GW e GD
MX4, MB4, MW4, MD4, ML4
per M, MW e MD
N.B.: attenzione a non confondere le sigle
MD2 ed MD4 associate a variabili doppie word (intere) con le variabili
MD (impropriamente chiamate DOUBLE nel PLUS) che sono variabili floating
point:
MDW_ASSI_AssiInMovimento_Proc1 AT %MD4.2710 : DWORD ; (* MW1355-MW1356
*)
|
2717 |
2716 |
2715 |
2714 |
2713 |
2712 |
2711 |
2710 |
|
MW1358 |
MW1357 |
MW1356 |
MW1355 | ||||
|
MDW_…. |
MDW_ASSI_AssiInMovimento_Proc1 | ||||||
MLR_DRIV_AggiustMANACC_Proc1 AT %ML4.24160 : LREAL ; (* MD520 *)
|
24167 |
24166 |
24165 |
24164 |
24163 |
24162 |
24161 |
24160 |
|
MD520
(floating point) | |||||||
|
MLR_DRIV_AggiustMANACC_Proc1
(floating point) | |||||||
offset
= offset memoria WinPLUS
:
per I0 .. ID0
:
0
per Q1 .. QD1
:
0
per MX2 .. ML2
:
0
se S o SW
1000
se G o GW
1512
se GD
per MX4 .. ML4
:
0
se M o MW
20000
se MD
k = indirizzo della variabile CN
i =
2 per S, SW, G, GW, M o MW
8 per
MD o GD
bit = n. del bit da 0 a 15 (solo se la variabile è di tipo BOOL altrimenti si omette)
Tabella
Indirizzamento simbolici Area CN tramite puntatore | |||||
|
AREA
CN |
Tipo |
Range (k) |
offset
kmax*I +offset |
i |
Definizione WinPLUS / Note NOMEVAR
at %NN. k*i + offset
(.bit):TIPOVAR ; |
|
Area
MW |
|
0..9999 |
0 19998 |
2 |
|
|
M1300_5 |
BOOL |
|
|
|
MM_ASSI_…AT %MX4.2600.4 :BOOL
; |
|
MW1300 byte
low |
BYTE |
|
|
|
MB_ASSI_…AT %MB4.2600 :BYTE
; |
|
MW1300 byte
high |
BYTE |
|
|
|
MB_ASSI_…AT %MB4.2601 :BYTE
; |
|
MW1300 |
WORD |
|
|
|
MW_ASSI_…AT %MW4.2600 :WORD
; |
|
MW1300 |
INT |
|
|
|
MI_ASSI_… AT %MW4.2600 :INT
; |
|
MW1301-MW1300 |
DWORD |
|
|
|
MDW_ASSI…AT %MD4.2600
:DWORD; |
|
MW1301-MW1300 |
DINT |
|
|
|
MDI_ASSI… AT %MD4.2600
:DINT; |
|
|
|
|
|
|
|
|
Area
MD (floating
point) |
|
0..2999 |
20000 43992 |
8 |
|
|
MD400 |
LREAL |
|
|
|
MLR_ASSI_…
AT %ML4.23200 :LREAL
; |
|
|
|
|
|
|
|
|
Area
GW |
|
0..255 |
1000 1510 |
2 |
Memorie
ritentive |
|
G10_5 |
BOOL |
|
|
|
RM_ASSI_…
AT %MX2.1020.5 :BOOL
; |
|
GW10 byte
low |
BYTE |
|
|
|
RW_ASSI_…
AT %MB2.1020 :BYTE
; |
|
GW10 byte
high |
BYTE |
|
|
|
RW_ASSI_…
AT %MB2.1021 :BYTE
; |
|
GW10 |
WORD |
|
|
|
RW_ASSI_…
AT %MW2.1020 :WORD
; |
|
GW10 |
INT |
|
|
|
RI_ASSI_… AT %MW2.1020 :INT
; |
|
GW11 –
GW10 |
DWORD |
|
|
|
RDW_ASSI…AT %MD4.1020
:DWORD; |
|
GW11 – GW10 |
DINT |
|
|
|
RDI_ASSI… AT %MD4.1020
:DINT; |
|
|
|
|
|
|
|
|
Area
GD (floating
point) |
|
0..63 |
1512 2016 |
8 |
Memorie
ritentive |
|
GD15 |
LREAL |
|
|
|
RLR_ASSI_…
AT %ML2.1632 :LREAL
; |
|
|
|
|
|
|
|
|
Area
SW |
|
0..499 |
0 998 |
2 |
|
|
S31_0 |
BOOL |
|
|
|
SM_CN_… AT %MX2.62.0 :BOOL
; |
|
SW31 |
WORD |
|
|
|
SW_CN_… AT %MW2.62 :WORD
; |
|
SW31 |
INT |
|
|
|
SI_CN_…
AT %MW2.62 :INT
; |
|
|
|
|
|
|
|
|
Area
A (stringhe
ascii) |
|
0..1499 |
0 62958 |
4 2 |
Ogni
stringa occupa 42 caratteri |
|
A0 |
STRING |
|
|
|
ASC_… AT %MS5.0 :STRING[40]
; |
|
|
|
|
|
|
|
Indirizzamento
diretto
Come si è detto in precedenza, nelle ultime release
CN, OSAI consente di associare direttamente i simbolici alle variabili CN in
chiaro così da agevolare la definizione delle variabili stesse.
Esempi :
RM_VARI_WarmupInCorso
AT G25_2
: BOOL ;
(* G25_2
@WARMUP_ON *)
RI_VARI_TavolaInLavoro
AT GW26
: INT ;
(* GW26 @WORK_TABLE
*)
RLR_VARI_ContaOre AT GD6 :
LREAL ; (*
GD6 @TIME_MACH
*)
MSG_DRIV_AssiInPreallarme
AT M140_0
: BOOL
INP_FunzioneStallModeAttiva1
AT M1000_0
: BOOL;
MM_ASSI_OkPrimoCicloWarmStart AT M1300_0 : BOOL
;
Data la semplicità di utilizzo, per le future applicazioni adottare
quindi questa tecnica.
Un array è un insieme
indicizzato di variabili omogenee con nome , tipo e dimensione specificati in
fase di definizione. La dimensione è stabilita dai valori di indice minimo e
massimo specificati in fase di definizione. L’indice dell’array, che può
assumere valori compresi fra il minimo ed il massimo definiti, consente di
operare singolarmente su ciascuna delle sue variabili. Il vantaggio di disporre
di un array deriva dalla possibilità di utilizzare una variabile per gestire
l’indice dell’array così da agevolare la gestione di blocchi di dati anche di
grandi dimensioni. In particolare, come le singole variabili globali, anche gli
array possono essere associati alle aree di memoria del CN, facilitando così il
compito del programmatore quando si debbano gestire blocchi di memorie CN di una
certa dimensione. Di seguito sono indicate le regole prestabilite o decise per
l’utilizzo dell’array:
a) assegnare sempre 1 all’indice minimo
dell’array.
b) l’area di memoria che precede il primo
elemento dell’array è riservata dal WinPLUS alla gestione dell’array. Attenzione
a tenerne conto in fase di definizione dell’indirizzo iniziale dell’array nel
caso venga associato all’area di memoria del CN. In questo caso l’area di memoria che precederà il primo
elemento non dovrà essere assolutamente usata nel PLC.
c) a causa di quanto indicato nel punto b NON
è possibile associare un array alle memorie di sistema.
L’esempio seguente permette
di azzerare tutte le variabili comprese nel range MW3800-MW3819.
VAR_GLOBAL
MI_FUNZ_Array_Funz_M_Proc1
AT %MW4.7598 : ARRAY[1.20] OF INT ;
(* N.B.: l’indirizzo 7598 corrisponde alla MW3799 che non deve quindi essere
utilizzata nel PLC *)
END_VAR
PROGRAM
Funz
VAR
LOC_MI_Contatore
: INT
;
END_VAR
FOR
LOC_MI_Contatore := 1 TO 20 BY 1 DO
MI_FUNZ_Array_Funz_M_Proc1[LOC_MI_Contatore]
:= 0 ;
END_FOR
;
END_PROGRAM
|
Convenzione adottata per nomenclatura I/O
macchina. |
SIMBOLO |
|
INGRESSI
(INPUT) |
|
|
Derivato,
generico, … |
INP |
|
|
|
|
Flussostato |
FL |
|
|
|
|
Interruttore
automatico |
QF |
|
Interruttore
di protezione motore |
QM |
|
|
|
|
Resistenza
di frenatura |
RR |
|
|
|
|
Selettore
|
SA |
|
Pulsante |
SB |
|
Pulsante/Selettore
luminoso |
SH |
|
Sensore
di livello |
SL |
|
Sensore
di pressione |
SP |
|
Sensore
di posizione |
SQ |
|
Sensore
di rotazione |
SR |
|
Sensore
di temperatura |
ST |
|
|
|
|
Termostato |
TR |
|
|
|
|
USCITE
(OUTPUT) |
|
|
Derivata,
generica, … |
OUT |
|
|
|
|
Segnalatore
ottico, lampada, … |
HL |
|
|
|
|
Relè
istantaneo |
KA |
|
Contattori
di potenza |
KM |
|
|
|
|
Freno
elettromagnetico |
YB |
|
Elettrovalvola |
YV |
|
|
|
Legenda: xxxx Nome del blocco in cui
la memoria viene impostata
y
Sigla memoria di sistema (S o M)
|
VARIABILE |
RANGE |
SIMBOLO |
|
|
|
|
|
MEMORIE
VOLATILI 1 BIT
|
0¸1 |
MM_xxxx |
|
MEMORIE
VOLATILI 8 BIT BYTE |
0¸255 |
MB_xxxx |
|
MEMORIE
VOLATILI 16 BIT WORD (UNSIGNED) |
0¸65535 |
MW_xxxx |
|
MEMORIE
VOLATILI 16 BIT INT
(SIGNED) |
-32768¸32767 |
MI_xxxx |
|
MEMORIE
VOLATILI 32 BIT DOUBLE WORD (UNS.) |
0¸294967295 |
MDW_xxxx |
|
MEMORIE
VOLATILI 32 BIT DOUBLE INT (SIGNED) |
-2147483648¸2147483647 |
MDI_xxxx |
|
MEMORIE
VOLATILI 64 BIT LONG REAL |
floating
point 64bit precis. |
MLR_xxxx |
|
MEMORIE
VOLATILI TIME |
|
MT_xxxxx |
|
|
|
|
|
MEMORIE
RITENTIVE 1 BIT |
0¸1 |
RM_xxxx |
|
MEMORIE
RITENTIVE 8 BIT
BYTE |
0¸255 |
RB_xxxx |
|
MEMORIE
RITENTIVE 16 BIT WORD (UNSIGNED) |
0¸65535 |
RW_xxxx |
|
MEMORIE
RITENTIVE 16 BIT INT
(SIGNED) |
-32768¸32767 |
RI_xxxx |
|
MEMORIE
RITENTIVE 32 BIT DOUBLE WORD (UN.) |
0¸294967295 |
RDW_xxxx |
|
MEMORIE
RITENTIVE 32 BIT DOUBLE INT (SIGN.) |
-2147483648¸2147483647 |
RDI_xxxx |
|
MEMORIE
RITENTIVE 64 BIT LONG REAL |
floating
point 64bit precis. |
RLR_xxxx |
|
|
|
|
|
MEMORIE
VOLATILI 1 BIT CN |
0¸1 |
yM_CN |
|
MEMORIE
VOLATILI 8 BIT CN BYTE
|
0¸255 |
yB_CN |
|
MEMORIE
VOLATILI 16 BIT CN WORD (UNSIGNED) |
0¸65535 |
yW_CN
|
|
MEMORIE
VOLATILI 16 BIT CN INT (SIGNED) |
-32768¸32767 |
yI_CN |
|
MEMORIE
VOL. 32 BIT CN DOUBLE WORD (UNS.) |
0¸294967295 |
yD_CN |
|
MEMORIE
VOL. 32 BIT CN DOUBLE INT (SIGNED) |
-2147483648¸2147483647 |
yDI_CN |
|
MEMORIE
VOL. 64 BIT CN LONG REAL |
floating
point 64bit precis. |
yLR_CN |
|
VARIABILE |
RANGE |
SIMBOLO |
|
|
|
|
|
MEMORIE 1 BIT |
0¸1 |
LOC_MM |
|
MEMORIE 8 BIT BYTE |
0¸255 |
LOC_MB |
|
MEMORIE
16 BIT WORD (UNSIGNED) |
0¸65535 |
LOC_MW |
|
MEMORIE
16 BIT INT
(SIGNED) |
-32768¸32767 |
LOC_MI |
|
MEMORIE 32 BIT DOUBLE WORD
(UNS.) |
0¸294967295 |
LOC_MDW |
|
MEMORIE 32 BIT DOUBLE INT
(SIGNED) |
-2147483648¸2147483647 |
LOC_MDI |
|
MEMORIE 64 BIT LONG
REAL |
floating
point 64bit precis. |
LOC_MLR |
|
MEMORIE TIME |
|
LOC_MT |
|
| |||||
|
VARIABILI |
E |
GW |
GD |
MW |
MD |
|
FILE |
0-50 |
0-255 |
0-63 |
0-6949 |
0-1949 |
|
FAST |
|
0-9 |
13-14 |
0-99 |
0-9 |
|
PANPC |
|
246 |
|
200-249 |
|
|
USUR |
|
247-250 |
3-5 |
250-259 |
580-619 |
|
ASSI |
|
10-14 |
15-16 |
1260-1399 |
400-409 |
|
LUBR |
|
20-24 |
17-18 |
1400-1499 |
410-419 |
|
BLOC |
|
30-39 |
19-20 |
1500-1599 |
420-429 |
|
POMP |
|
40-49 |
21-22 |
1600-1640 1641-1649
keb |
430-439 |
|
KEB |
|
|
|
1650-1699 |
|
|
REVO |
|
50-59 |
|
1700-1799 |
440-449 |
|
PROC |
|
60-69 |
25-26 |
1800-1899 |
450-459 |
|
FORA |
|
|
|
1900-1999 |
460-469 |
|
TEST |
|
80-89 |
29-30 |
2000-2099 |
470-479 |
|
CAMB1 |
|
90-99 |
31-32 |
2100-2199 |
480-489 |
|
CAMB2 |
|
100-109 |
33-34 |
2200-2299 |
490-499 |
|
CAMB3 |
|
110-119 |
35-36 |
2300-2399 |
500-509 |
|
CAMB4 |
|
120-129 |
37-38 |
2400-2479 |
510-519 |
|
DRIV |
|
70-79 |
27-28 |
2500-2599 |
520-529 |
|
PULS |
|
130-139 |
23-24 |
2600-2699 |
530-539 |
|
ZERO |
|
|
|
2700-2799 |
540-549 |
|
VARI |
|
25-29 |
6 –
12 |
2800-2899 |
550-559 |
|
OFFSET |
|
140-149 |
|
3760-3798 |
560-569 |
|
FUNZ |
|
|
|
3799-3899 |
570-579 |
|
VARIE |
|
|
|
|
|
|
MESSAG. |
|
|
|
100-199 |
|
|
IN\OUT |
|
|
|
1000-1259 |
|
|
PROTOC. |
|
150-189 200-229 |
|
2480-2499 2900-3759 3900-6499 |
|
|
IN\OUT |
|
|
|
1000-1259 |
|
|
MACRO |
|
190-199 |
|
|
|
|
WINPROD |
|
230-239 |
|
|
|
|
PLAST |
|
240-245 |
60-63 |
|
|
|
PROGRAM |
0-50 |
|
|
|
|
|
@PLUS |
|
15-19 |
|
|
|
|
|
|
|
|
|
|
|
LIBERE |
|
|
1-2 |
260-999 |
10-399 |
|
|
251-255 |
39-59 |
6500-6949 |
620-1949 | |
|
|
|
|
|
|
|
Blocchi di istruzioni
ripetitivi nel progetto possono essere strutturati in Funzioni o in
FunctionBlock. Preferire l’utilizzo delle Funzioni all’utilizzo dei
FunctionBlock perché pur meno performanti consentono una programmazione più semplice e comunque
funzionale.
Per maggiore leggibilità
del codice si decide di anteporre F_
al nome della funzione e al tipo
di parametro formale della funzione la
stringa “FNI_” per i parametri d’ingresso e “FNO_” per i parametri
d’uscita.
Esempi: F_EseguoSomma, FNI_MI_Addendo1
, FNI_MI_Addendo2 , FNO_MI_Risultato.
Le variabili locali
utilizzate all’interno della funzione vanno invece codificate come già previsto
per tutte le variabili LOCALI.
Per la loro realizzazione si preferisce, per maggiore
leggibilità del programma, utilizzare delle normali variabili e relativa
gestione incrementale/decrementale al posto delle strutture
predefinite.
Sono previsti i seguenti tipi di temporizzatori con
la relativa simbologia :
Diagramma Temporale
Timer
| DLY|
| DLY|
INP
__|-----------------|_______
OUT
______|----------|_______
Timer TON
OUT
__|------------------------|___
Timer TOF
OUT
__|------|______________ Timer
TP
Esempio di dichiarazione
Istanza Timer TON
TimerTon_1(o descrizione):
TON;
Esempio di dichiarazione
Istanza Timer
TOF
TimerTof_1(o descrizione):
TOF;
Esempio di dichiarazione
Istanza Timer TP
TimerTp_1(o descrizione):
TP;
Esempi di
utilizzo:
TimerTon_Oscillatore : TON
;
LOC_MT_Oscillatore : TIME
;
TimerTon_Oscillatore
( IN :=
NOT LOC_MM_AuxOscillatore, PT := KT_30S,
Q => LOC_MM_AuxOscillatore, ET => LOC_MT_Oscillatore) ;
I Parametri Q e ET sono opzionali
:
TimerTon_FrenoTavole : TON
;
TimerTon_FrenoTavole( IN := INP_ModuloEmergenzaOk, PT :=
KT_2S);
YV_DisattFrenoPneumaticoTavolaDx := TimerTon_FrenoTavole.Q
;
Ovviamente in questo caso il Timer è da
considerarsi come una variabile LOCALE e
utilizzabile solo nel modulo in cui è
stata definite la relativa instanza.
Sono previsti i seguenti tipi di pulse con la
relativa simbologia :
Pulse Fronte Salita :
PulseUp_1(o descrizione)
:R_TRIG ;
Pulse Fronte Discesa
:
PulseDown_1(o descrizione) :F_TRIG
;
Esempio di
utilizzo:
PulseUp_PrimoCiclo:
R_TRIG;
PulseUp_PrimoCiclo( CLK:=
TRUE, Q=> MM_ASSI_PulsePrimoCiclo) ;
CLK stabilisce il segnale da
analizzare.
MM_ASSI_PulsePrimoCiclo è la pulse
disponibile per un ciclo di logica.
Il parametro Q è
opzionale:
PulseUp_PrimoCiclo( CLK:=
TRUE) ;
IF(
PulseUp_PrimoCiclo.Q) THEN …
Ovviamente questa pulse è da
considerarsi come una variabile LOCALE e utilizzabile
solo nel modulo in cui è stata definite
la relativa instanza.
Per le convenzioni adottate per la nomenclatura di
Funzioni , Temporizzatori , Pulse , ecc . riferirsi alla seguente
tabella:
|
STRUTTURA DATI |
SIMBOLO |
ESEMPIO |
|
|
|
|
|
FUNZIONE
|
F |
F_EseguoSomma |
|
BLOCCO
FUNZIONE |
FB |
FB_DatiUt. |
|
Par.
d’Ingresso Funzione |
FNI_MI |
FNI_MI_Addendo1 |
|
Par.
d’uscita Funzione |
FNO_MI |
FNO_MI_Risultato |
|
|
|
|
|
Timer
tipo TON |
TimerTon |
TimerTon_RitardoInitMotori |
|
Timer
tipo TOFF |
TimerToff |
TimerToff_Spegnimento |
|
Timer
tipo TP |
TimerTp |
TimerTp_Soffiatore |
|
|
|
|
|
Pulse
salita |
Pulse_Up |
PulseUp_PrimoPowerOn |
|
Pulse
discesa |
Pulse_Down |
PulseDownResetCnProc1 |
|
|
|
|
|
Struttura
Dati |
STR_ |
STR_MOVCU_ArrayCanPhaseCu |
La gestione delle softkey è affidata al programma Visual Basic “OpPanel” operante sul PC unitamente al sistema WinNBI. Interfacciandosi al CN tramite un server software consente di condividere delle variabili prestabilite (definite nel modulo VarPanPc.gvl) che consentono di determinare quali softkey sono state premute e se tali softkey debbano essere illuminate o meno.
I testi visualizzati associati a ciascuna softkey vanno inseriti nel file di inizializzazione “OpPanel.ini”.
Il programma VB setta il bit relativo alla softkey premuta. Il PLC acquisisce l’informazione e provvede a resettarlo. Finché il bit non viene resettato non può essere premuta alcun’altra softkey.
Il programma illumina le softkey che hanno il relativo bit di lampada impostato allo stato logico “1”.
Per la gestione dei messaggi WinPLUS mette a disposizione un file ascii di nome WinPLUS.asc da caricare nel direttorio E:\LOG\WIN del CN che consente di gestire fino a 1500 messaggi di 40 caratteri ciascuno.
Ogni messaggio deve essere preceduto dal numero di riga come si evince dal seguente esempio: 14,LUBRIFICAZIONE ASSI INEFFICIENTE
Il file viene organizzato come segue:
riga 0 non usata
riga 1 ¸ riga 256 : messaggi ITALIANO
riga 257 ¸ riga 512 : messaggi INGLESE
riga 513 ¸ riga 768 : messaggi FRANCESE
riga 769 ¸ riga 1024 : messaggi SPAGNOLO
riga 1025 ¸ riga 1280 : messaggi TEDESCO
riga 1281 ¸ riga 1500 : area ascii libera
Programmando opportunamente la funzione di sistema MESSROT() è così possibile visualizzare i messaggi attivi , nella lingua del Cliente disponibile nel parametro AMP @LINGUA GW17:
@LINGUA = 1 : ITALIANO
= 2 : INGLESE
= 3 : FRANCESE
= 4 : SPAGNOLO
= 5 : TEDESCO
Tramite la funzione MESSROT è anche possibile stabilire la corrispondenza fra le 256 righe ascii della lingua del Cliente e un banco di 16 MW i cui bit determinano quali messaggi sono attivi (bit allo stato logico =1). Le MW rimangono le stesse per tutte le lingue. A ciascuna MW viene abbinata anche l’azione corrispondente all’attivazione di un proprio bit: HOLD , FEEDHOLD , WARNING come di seguito indicato (prendendo come esempio la lingua ITALIANO).
Lingua ITALIANO (riga 1 ¸ riga 256) Azione associata:
riga
1 ¸ riga 16 :
MW140
HOLD
riga 17
¸ riga 32 :
MW141
HOLD
riga 33
¸ riga 48 :
MW142
HOLD
riga 49
¸ riga 64 :
MW143
HOLD
riga
65 ¸ riga 80 : MW144
FEED HOLD
riga
81 ¸ riga 96 : MW145
FEED HOLD
riga
97 ¸ riga 112 : MW146
FEED HOLD
riga 113
¸ riga 128 : MW147
FEED HOLD
riga 129
¸ riga 144 : MW148
WARNING
riga 145
¸ riga 160 : MW149
WARNING
riga 161
¸ riga 176 : MW150
WARNING
riga 177
¸ riga 192 : MW151
WARNING
riga 193
¸ riga 208 : MW152
WARNING
riga 209
¸ riga 224 : MW153
WARNING
riga 225
¸ riga 240 : MW154
WARNING
riga 241
¸ riga 256 : MW155
WARNING
ITA ING FRA SPA TED MEMO
ITA ING FRA SPA TED
MEMO
1 257 513 769 1025 M140,0 49 305 561 817 1073
M143,0
2 258 514 770 1026 M140,1 50 306 562 818 1074
M143,1
3 259 515 771 1027 M140,2 51 307 563 819 1075
M143,2
4 260 516 772 1028 M140,3 52 308 564 820 1076
M143,3
5 261 517 773 1029 M140,4 53 309 565 821 1077
M143,4
6 262 518 774 1030 M140,5 54 310 566 822 1078
M143,5
7 263 519 775 1031 M140,6 55 311 567 823 1079
M143,6
8 264 520 776 1032 M140,7 56 312 568 824 1080
M143,7
9 265 521 777 1033 M140,8 57 313 569 825 1081
M143,8
10 266 522 778 1034 M140,9 58 314 570 826 1082
M143,9
11 267 523 779 1035 M140,10 59 315 571 827 1083
M143,10
12 268 524 780 1036 M140,11 60 316 572 828 1084
M143,11
13 269 525 781 1037 M140,12 61 317 573 829 1085
M143,12
14 270 526 782 1038 M140,13 62 318 574 830 1086
M143,13
15 271 527 783 1039 M140,14 63 319 575 831 1087
M143,14
16 272 528 784 1040 M140,15 64 320 576 832 1088
M143,15
17 273 529 785 1041 M141,0 65 321 577 833 1089
M144,0
18 274 530 786 1042 M141,1 66 322 578 834 1090
M144,1
19 275 531 787 1043 M141,2 67 323 579 835 1091
M144,2
20 276 532 788 1044 M141,3 68 324 580 836 1092
M144,3
21 277 533 789 1045 M141,4 69 325 581 837 1093
M144,4
22 278 534 790 1046 M141,5 70 326 582 838 1094
M144,5
23 279 535 791 1047 M141,6 71 327 583 839 1095
M144,6
24 280 536 792 1048 M141,7 72 328 584 840 1096
M144,7
25 281 537 793 1049 M141,8 73 329 585 841 1097
M144,8
26 282 538 794 1050 M141,9 74 330 586 842 1098
M144,9
27 283 539 795 1051 M141,10 75 331 587 843 1099
M144,10
28 284 540 796 1052 M141,11 76 332 588 844 1100
M144,11
29 285 541 797 1053 M141,12 77 333 589 845 1101
M144,12
30 286 542 798 1054 M141,13 78 334 590 846 1102
M144,13
31 287 543 799 1055 M141,14 79 335 591 847 1103
M144,14
32 288 544 800 1056 M141,15 80 336 592 848 1104
M144,15
33 289 545 801 1057 M142,0 81 337 593 849 1105
M145,0
34 290 546 802 1058 M142,1 82 338 594 850 1106 M145,1
35 291 547 803 1059 M142,2 83 339 595 851 1107
M145,2
36 292 548 804 1060 M142,3 84 340 596 852 1108
M145,3
37 293 549 805 1061 M142,4 85 341 597 853 1109
M145,4
38 294 550 806 1062 M142,5 86 342 598 854 1110
M145,5
39 295 551 807 1063 M142,6 87 343 599 855 1111
M145,6
40 296 552 808 1064 M142,7 88 344 600 856 1112
M145,7
41 297 553 809 1065 M142,8 89 345 601 857 1113
M145,8
42 298 554 810 1066 M142,9 90 346 602 858 1114
M145,9
43 299 555 811 1067 M142,10 91 347 603 859 1115
M145,10
44 300 556 812 1068 M142,11 92 348 604 860 1116
M145,11
45 301 557 813 1069 M142,12 93 349 605 861 1117
M145,12
46 302 558 814 1070 M142,13 94 350 606 862 1118
M145,13
47 303 559 815 1071 M142,14 95 351 607 863 1119
M145,14
48 304 560 816 1072 M142,15 96 352 608 864 1120
M145,15
ITA ING FRA SPA TED MEMO
ITA ING FRA SPA TED
MEMO
97 353 609 865 1121 M146,0 145 401 657 913 1169
M149,0
98 354 610 866 1122 M146,1 146 402 658 914 1170
M149,1
99 355 611 867 1123 M146,2 147 403 659 915 1171
M149,2
100 356 612 868 1124 M146,3 148 404 660 916 1172
M149,3
101 357 613 869 1125 M146,4 149 405 661 917 1173
M149,4
102 358 614 870 1126 M146,5 150 406 662 918 1174
M149,5
103 359 615 871 1127 M146,6 151 407 663 919 1175
M149,6
104 360 616 872 1128 M146,7 152 408 664 920 1176
M149,7
105 361 617 873 1129 M146,8 153 409 665 921 1177
M149,8
106 362 618 874 1130 M146,9 154 410 666 922 1178
M149,9
107 363 619 875 1131 M146,10 155 411 667 923 1179
M149,10
108 364 620 876 1132 M146,11 156 412 668 924 1180
M149,11
109 365 621 877 1133 M146,12 157 413 669 925 1181
M149,12
110 366 622 878 1134 M146,13 158 414 670 926 1182
M149,13
111 367 623 879 1135 M146,14 159 415 671 927 1183
M149,14
112 368 624 880 1136 M146,15 160 416 672 928 1184
M149,15
113 369 625 881 1137 M147,0 161 417 673 929 1185
M150,0
114 370 626 882 1138 M147,1 162 418 674 930 1186
M150,1
115 371 627 883 1139 M147,2 163 419 675 931 1187
M150,2
116 372 628 884 1140 M147,3 164 420 676 932 1188
M150,3
117 373 629 885 1141 M147,4 165 421 677 933 1189
M150,4
118 374 630 886 1142 M147,5 166 422 678 934 1190
M150,5
119 375 631 887 1143 M147,6 167 423 679 935 1191
M150,6
120 376 632 888 1144 M147,7 168 424 680 936 1192
M150,7
121 377 633 889 1145 M147,8 169 425 681 937 1193
M150,8
122 378 634 890 1146 M147,9 170 426 682 938 1194
M150,9
123 379 635 891 1147 M147,10 171 427 683 939 1195
M150,10
124 380 636 892 1148 M147,11 172 428 684 940 1196
M150,11
125 381 637 893 1149 M147,12 173 429 685 941 1197
M150,12
126 382 638 894 1150 M147,13 174 430 686 942 1198
M150,13
127 383 639 895 1151 M147,14 175 431 687 943 1199
M150,14
128 384 640 896 1152 M147,15 176 432 688 944 1200
M150,15
129 385 641 897 1153 M148,0 177 433 689 945 1201
M151,0
130 386 642 898 1154 M148,1 178 434 690 946 1202
M151,1
131 387 643 899 1155 M148,2 179 435 691 947 1203
M151,2
132 388 644 900 1156 M148,3 180 436 692 948 1204
M151,3
133 389 645 901 1157 M148,4 181 437 693 949 1205
M151,4
134 390 646 902 1158 M148,5 182 438 694 950 1206
M151,5
135 391 647 903 1159 M148,6 183 439 695 951 1207
M151,6
136
392 648 904 1160 M148,7 184 440 696 952 1208
M151,7
137 393 649 905 1161 M148,8 185 441 697 953 1209
M151,8
138 394 650 906 1162 M148,9 186 442 698 954 1210
M151,9
139 395 651 907 1163 M148,10 187 443 699 955 1211
M151,10
140 396 652 908 1164 M148,11 188 444 700 956 1212
M151,11
141 397 653 909 1165 M148,12 189 445 701 957 1213
M151,12
142 398 654 910 1166 M148,13 190 446 702 958 1214
M151,13
143 399 655 911 1167 M148,14 191 447 703 959 1215
M151,14
144 400 656 912 1168 M148,15 192 448 704 960 1216
M151,15
ITA ING FRA SPA TED MEMO
ITA ING FRA SPA TED
MEMO
193 449 705 961 1217 M152,0 241 497 753 1009 1265
M155,0
194 450 706 962 1218 M152,1 242 498 754 1010 1266
M155,1
195 451 707 963 1219 M152,2 243 499 755 1011 1267
M155,2
196 452 708 964 1220 M152,3 244 500 756 1012 1268
M155,3
197 453 709 965 1221 M152,4 245 501 757 1013 1269
M155,4
198 454 710 966 1222 M152,5 246 502 758 1014 1270
M155,5
199 455 711 967 1223 M152,6 247 503 759 1015 1271
M155,6
200 456 712 968 1224 M152,7 248 504 760 1016 1272
M155,7
201 457 713 969 1225 M152,8 249 505 761 1017 1273
M155,8
202 458 714 970 1226 M152,9 250 506 762 1018 1274
M155,9
203 459 715 971 1227 M152,10 251 507 763 1019 1275
M155,10
204 460 716 972 1228 M152,11 252 508 764 1020 1276
M155,11
205 461 717 973 1229 M152,12 253 509 765 1021 1277
M155,12
206 462 718 974 1230 M152,13 254 510 766 1022 1278
M155,13
207 463 719 975 1231 M152,14 255 511 767 1023 1279
M155,14
208 464 720 976 1232 M152,15 256 512 768 1024 1280
M155,15
209 465 721 977 1233 M153,0
210 466 722 978 1234 M153,1
211 467 723 979 1235 M153,2
212 468 724 980 1236 M153,3
213 469 725 981 1237 M153,4
214 470 726 982 1238 M153,5
215 471 727 983 1239 M153,6
216 472 728 984 1240 M153,7
217 473 729 985 1241 M153,8
218 474 730 986 1242 M153,9
219 475 731 987 1243 M153,10
220 476 732 988 1244 M153,11
221 477 733 989 1245 M153,12
222 478 734 990 1246 M153,13
223 479 735 991 1247 M153,14
224 480 736 992 1248 M153,15
225 481 737 993 1249 M154,0
226 482 738 994 1250 M154,1
227 483 739 995 1251 M154,2
228 484 740 996 1252 M154,3
229 485 741 997 1253 M154,4
230 486 742 998 1254 M154,5
231 487 743 999 1255 M154,6
232 488 744 1000 1256 M154,7
233 489 745 1001 1257 M154,8
234 490 746 1002 1258 M154,9
235 491 747 1003 1259 M154,10
236 492 748 1004 1260 M154,11
237 493 749 1005 1261 M154,12
238 494 750 1006 1262 M154,13
239 495 751 1007 1263 M154,14
240 496 752 1008 1264 M154,15
Nelle ultime applicazioni PLC si è preferito differenziare i file messaggi nelle varie lingue.
Questa tecnica consente di disporre di un numero maggiore di allarmi per ciascuna lingua tradizionale, di agevolare le operazioni per l’aggiunta di messaggi in nuove lingue e facilita in generale le operazioni di confronto.
I file vanno inseriti nel direttorio E:\LOG\WIN del CN.
Programmando opportunamente la funzione di sistema MESSROT() è così possibile visualizzare i messaggi attivi , nella lingua del Cliente disponibile nel parametro AMP @LINGUA GW17:
@LINGUA = 1 : ITALIANO File ITA.ASC
= 2 : INGLESE File ING.ASC
= 3 : FRANCESE File FRA.ASC
= 4 : SPAGNOLO File SPA.ASC
= 5 : TEDESCO File TED.ASC
=… : … File … .ASC
Tramite la funzione MESSROT è anche possibile stabilire la corrispondenza fra le righe ascii della lingua del Cliente e un banco di n. MW i cui bit determinano quali messaggi sono attivi (bit allo stato logico =1). Le MW rimangono le stesse per tutte le lingue.
La tecnica di associare alla posizione del messaggio il tipo di azione che il messaggio comporterà (HOLD, FEEDHOLD, WARNING, …), pur essendo utilizzata anche con i file multipli è comunque in via di sostituzione con la tecnica che prevede di gestire i messaggi in posizione libera e di raggrupparli successivamente (condizionandoli eventualmente al verificarsi di determinate condizioni) in gruppi associati a variabili che stabiliscono l’azione da realizzare al verificarsi di un messaggio che compone quel gruppo. Ciò consente di visualizzare il messaggio in ogni caso e di ripartire i messaggi come si desideri.
Si consiglia inoltre di riportare nel file VarMsg.gvl la descrizione presente nel file ITA.ASC (sempre presente) così da agevolare le operazioni di diagnostica data la possibilità di trovare facilmente (operazione CTRL+I) il punto in cui il messaggio è gestito (eventualmente forzando provvisoriamente @LINGUA=1) :
MSG_DRIV_AssiInPreallarme
AT M140_0 : BOOL ;
(* 148 ASSI IN PREALLARME *)
MSG_DRIV_AssiInAllarme
AT M140_1 : BOOL ;
(* 147 ASSI IN ALLARME
*)
MSG_DRIV_AzionamentiNonAliment AT M140_2 : BOOL ; (* 151 AZIONAMENTI NON ALIMENTATI *)
Questa attività permette di verificare che il progetto realizzi le specifiche iniziali ed di apportarvi le migliorie che si rivelassero necessarie. L’utilizzo esclusivo di variabili globali associate a variabili CN consente di ottenere un buon numero di informazioni già dall’interrogazione delle variabili tramite la procedura classica consentita all’interno del vecchio ambiente CN a cui si accede da WinNBI tramite l’icona “XY”.
Per una diagnostica esaustiva è invece necessario
operare in modalità OnLine nell’ambiente WinPLUS installato sul PC della
macchina. Per collegarsi OnLine
scopo debugging è necessario eseguire l’operazione di “Connect” e
successivamente “Enable Debug”.
L’uso dei breakpoint consente di arrestare l’esecuzione del
PLC in punti prestabiliti dell’applicazione (breakpoint) così da potere eseguire
diagnostiche accurate. Dato che il PLC in corrispondenza dei breakpoint viene
arrestato, potrebbero insorgere eventi incontrollati nonché pericolosi. Si
raccomanda quindi la massima attenzione quando li si
utilizzi.
Abilitando in OSAI TARGHET “NONE” significa che l’eseguibile che verrà
inviato sarà quello definitivo e quindi senza alcun
breakpoint.
Abilitando in OSAI TARGHET “SIMPLE” significa che i breakpoint sono validi
solo in testa ed alla fine dei programmi.
E’ possibile in questo caso abilitare i breakpoint in
un solo file di logica inserendo in testa al file:
(*[[
bpopt=”2”
]]*)
ricompilando e scaricando il nuovo
applicativo.
Abilitando in OSAI TARGHET “ADVANCED” significa che si possono usare i
breakpoint anche all’interno dei programmi.
N:B.: La rilevazione del codice Pos e valida solo
dalla Release cn 7.3 con Fixup 5 in poi.
N.B.: Per vedere il codice in Winplus, deve essere
attivo il Debug durante l’avvenuta dell’errore
Nel momento in cui l’interprete WinPlus genera un
errore, nella finestra di Debug del WinPlus Engineering viene visualizzato un
opportuno messaggio. All’interno del messaggio, oltre alla descrizione
dell’errore, viene segnalato il task che lo genera (nome) ed altri tre parametri
che permettono di identificare la linea di sorgente a cui si è verificato
l’errore.
{ Code: XX Pos: YY Inst: ZZ }
Per determinare la linea in cui compare l’errore
occorre generare il file di mappa del progetto (file osai.map che si trova nella
directory gen\osai\ ). Per ottenere tale file occorre aggiungere l’opzione
opt=map:2 all’interno del file <nomeprogetto>.4cp, sezione compiler e
ricompilare il progetto
[Compiler.4COsai]
….
….
opt=map:2
Il primo numero (Code) rappresenta il numero della
POU (programma, function, function block,….) in cui è presente l’errore.
All’interno della mappa occorre trovare una linea del tipo
.code ….. (classid=XX)
dove XX è l’ID dell’oggetto che ha generato
l’errore.
Il secondo numero (Pos) rappresenta la posizione
dell’errore all’interno dell’oggetto che lo ha generato. Tale valore deve essere
ricercato nella prima colonna nella sezione .code, in tal modo si determina la
linea che genera l’errore.
Il terzo numero (Inst) identifica l’istanza
dell’oggetto che ha generato l’errore (un programma od un FB può essere
utilizzato più volte in un progetto). Ricercando nella
zona
.begin instance objects
il numero ZZ si riesca a determinare l’istanza che ha
generato l’errore.
Il backup del PLC tramite PM Tool è utile per
eseguire il download di un PLC con la versione 2.15 di Winplus, ma compilato con
la versione di 2.15.2 e viceversa.
Per eseguire il backup lanciare il PM Tool da winplus
selezionando Tool -> Pm Tool. Apparirà la seguente
finestra:

Selezionare Backup ed inserire il percorso della
cartella contenete il PLC nel campo 4CONTROL Project.
Spuntare File System ed inserire il percorso di
destinazione del file che verrà creato nel campo Backup
File.
Selezionare Setting ed impostare i campi della nuova
finestra apparsa, con gli stessi valori della figura
sottostante.

Selezionare Ok e quindi Backup.
Per eseguire il Restore del PLC selezionare ancora il
PM Tool, quindi Restore. Impostare i campi Backup File con il percorso del
backup e 4CONTROL Project con la cartella in cui verrà ripristinato il PLC.
Impostare il resto dei settaggi come per la procedura di
Backup